//*********************************************************
//
//    Copyright (c) Microsoft. All rights reserved.
//    This code is licensed under the Apache License, Version 2.0.
//    THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
//    ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
//    IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
//    PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
//
//*********************************************************

namespace Microsoft.Research.ScientificWorkflow.UIDesigner
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Microsoft.Research.ScientificWorkflow.TridentModel;

    /// <summary>
    /// Abstraction for ProvenanceMode event notification.
    /// </summary>
    public class ProvenanceModeEventArgs : EventArgs
    {
        /// <summary>
        /// Gets or sets the ActivityName.
        /// </summary>
        public string ActivityName { get; private set; }

        /// <summary>
        /// Gets or sets the WorkflowName.
        /// </summary>
        public string WorkflowName { get; private set; }

        /// <summary>
        /// gets or sets the OptionSelected.
        /// </summary>
        public ProvenanceMenu OptionSelected { get; private set; }

        /// <summary>
        /// Base model of activity.
        /// </summary>
        public BaseModel Model { get; private set; }

        /// <summary>
        /// Initializes a new instance of the <see cref="ProvenanceModeEventArgs"/> class.
        /// </summary>
        /// <param name="activityName">Name of the activity.</param>
        /// <param name="jobID">The job ID.</param>
        /// <param name="selected">The selected.</param>
        /// <param name="model">The model.</param>
        public ProvenanceModeEventArgs(string activityName, string jobId, ProvenanceMenu selected, BaseModel model)
        {
            this.ActivityName = activityName;
            this.WorkflowName = jobId;

            this.OptionSelected = selected;
            this.Model = model;
        }
    }

    /// <summary>
    /// Enum for provenance menu.
    /// </summary>
    public enum ProvenanceMenu
    { 
        ProcessingStatus,
        InputOutput,
        DataProducts,
        Performance
    }
}
